From a00842fa9981a9fab90f435f81b71cdea1aa08f4 Mon Sep 17 00:00:00 2001 From: Matthias Clasen Date: Sat, 4 Oct 2014 15:52:02 -0400 Subject: [PATCH] Add a function to load css from a resource This is common enough that we should just provide an API for it - we already had a function for this purpose anyway. https://bugzilla.gnome.org/show_bug.cgi?id=672946 --- docs/reference/gtk/gtk3-sections.txt | 1 + gtk/gtkcssprovider.c | 25 ++++++++++++++++++++----- gtk/gtkcssprovider.h | 4 ++++ 3 files changed, 25 insertions(+), 5 deletions(-) diff --git a/docs/reference/gtk/gtk3-sections.txt b/docs/reference/gtk/gtk3-sections.txt index de04e7ff52..c7d53755bf 100644 --- a/docs/reference/gtk/gtk3-sections.txt +++ b/docs/reference/gtk/gtk3-sections.txt @@ -6158,6 +6158,7 @@ gtk_css_provider_get_named gtk_css_provider_load_from_data gtk_css_provider_load_from_file gtk_css_provider_load_from_path +gtk_css_provider_load_from_resource gtk_css_provider_new gtk_css_provider_to_string GTK_CSS_PROVIDER_ERROR diff --git a/gtk/gtkcssprovider.c b/gtk/gtkcssprovider.c index 8d6b216d19..62fde1cb42 100644 --- a/gtk/gtkcssprovider.c +++ b/gtk/gtkcssprovider.c @@ -2883,12 +2883,26 @@ gtk_css_provider_load_from_path (GtkCssProvider *css_provider, return result; } -static void -gtk_css_provider_load_from_resource (GtkCssProvider *css_provider, - const gchar *resource_path) +/** + * gtk_css_provider_load_from_resource: + * @css_provider: a #GtkCssProvider + * @resource_path: a #GResource resource path + * + * Loads the data contained in the resource at @resource_path into + * the #GtkCssProvider, clearing any previously loaded information. + * + * If there is an error locating the resource or parsing the CSS, + * then the program will be aborted. + * + * Since: 3.16 + */ +void +gtk_css_provider_load_from_resource (GtkCssProvider *css_provider, + const gchar *resource_path) { GFile *file; - char *uri, *escaped; + gchar *uri, *escaped; + GError *error; g_return_if_fail (GTK_IS_CSS_PROVIDER (css_provider)); g_return_if_fail (resource_path != NULL); @@ -2901,7 +2915,8 @@ gtk_css_provider_load_from_resource (GtkCssProvider *css_provider, file = g_file_new_for_uri (uri); g_free (uri); - gtk_css_provider_load_from_file (css_provider, file, NULL); + if (!gtk_css_provider_load_from_file (css_provider, file, &error)) + g_error ("Failed to load CSS: %s", error->message); g_object_unref (file); } diff --git a/gtk/gtkcssprovider.h b/gtk/gtkcssprovider.h index 4cf2f5105a..818173128b 100644 --- a/gtk/gtkcssprovider.h +++ b/gtk/gtkcssprovider.h @@ -103,6 +103,10 @@ gboolean gtk_css_provider_load_from_path (GtkCssProvider *css_provider, const gchar *path, GError **error); +GDK_AVAILABLE_IN_3_16 +void gtk_css_provider_load_from_resource (GtkCssProvider *provider, + const gchar *resource_path); + GDK_AVAILABLE_IN_ALL GtkCssProvider * gtk_css_provider_get_default (void); -- 2.30.2